/**
*控制器 实现类
*/
#include <controller.h>

Command::Command(){
    // 定义临时目录创建构建目录
    if(mkDirTmp("/tmp",this->buildDir) == -1)return;
    // 进入编译目录
    if (chdir(this->buildDir.c_str()) != 0) {
        cerr << "无法进入编译目录: " << this->buildDir.c_str() << endl;
        return;
    }
}

Command::~Command(){
    // 删除构建目录
    if(rmDir(this->buildDir.c_str()) == -1)return;
}
/**
* 构建 docker 镜像 控制器
*/
int Command::saveImage(){
    // 构建 代理服务 镜像
  if(strcmp(this->cmd, "docker_image_proxy") == 0){
    return saveProxyImage(this->buildDir,this->prefix);
  }
  // 构建 ssh ubuntu 22.04 镜像
  if(strcmp(this->cmd, "docker_image_ssh_ubuntu_22_04") == 0){
    return saveSshUbuntu_22_04Image(this->buildDir,this->prefix);
  }
  // 构建 ssh nginx proxy 服务 docker 镜像
  if(strcmp(this->cmd, "docker_image_ssh_nginx_proxy") == 0){
    return saveSshNginxProxyImage(this->buildDir,this->prefix);
  }
  return -1;
}
/**
*构建程序
*/
int Command::build(){
    // 构建 程序 输出程序
    if(strcmp(this->cmd, "output_app") == 0){
        return output_app(this->prefix,string(this->apppath));
    }
      // 构建 程序 输入程序
    if(strcmp(this->cmd, "input_app") == 0){
        return input_app(this->prefix);
    }
    // 构建 nginx 服务程序
    if(strcmp(this->cmd, "build_nginx") == 0){
        return build_nginx(this->buildDir,this->prefix);
    }
    // 构建 start_proxy 启动程序
    if(strcmp(this->cmd, "build_start_proxy") == 0){
        return build_start_proxy(this->buildDir,this->prefix);
    }

    return -1;
}

int Command::run(){
// 构建 docker 镜像
if(this->saveImage() == 0)return 0;
// 构建程序
if(this->build() == 0)return 0;
// docker compose up -d 启动 容器
if(strcmp(this->cmd, "docker_compose") == 0){
    DockerContainer dc;
    return 0;
}
cout<<"构建镜像成功"<<endl;
return 0;
}

















